﻿// CMakeVector.cpp: 定义应用程序的入口点。
//

#include "CMakeVector.h"
#include <vector>
#include <iostream>

using namespace std;

int main()
{
#if 0
	/******vector(beg, end);  构造函数，将[beg, end)区间中的元素拷贝给本身*******/
	int iarr[5] = { 1,2,3,4,5 };
	vector<int> v1(iarr, iarr + 5);  // 注意：前闭后开

	// vector(n,elem);  构造函数将n个elem拷贝给本身
	vector<int> v2(3, 8);

	// vector(const vector &vec) 拷贝构造函数
	vector<int> v3(v1);
	vector<int> v4 = v1;
	for (int i = 0; i < 5; i++)
	{
		std::cout << v4[i] << " ";
	}
	std::cout << std::endl;
#endif

#if 0
	/******vector的赋值*****/
	vector<int> vecIntA, vecIntC, vecIntD, vecIntE;
	int iArray[] = { 1,2,3,4,5 };
	vecIntA.assign(iArray, iArray + 5);  // 将[beg,end)区间中的元素拷贝赋值给本身
	for (int i = 0; i < vecIntA.size(); i++)
	{
		std::cout << vecIntA[i] << " ";
	}
	std::cout << std::endl;

	// 将iArray数组中的所有元素赋值到vecIntB容器
	vector<int> vecIntB(10, 8);
	vecIntB.assign(iArray, iArray + 5);  // 注意这里会清掉以前的数据

	// 将vecIntA容器中的数据全部赋值给vecIntC容器
	vecIntC.assign(vecIntA.begin(), vecIntA.end());  // begin() end()是指针
	for (int i = 0; i < vecIntC.size(); i++)
	{
		std::cout << vecIntC[i] << " ";
	}
	std::cout << std::endl;

	vecIntC.assign(vecIntA.begin() + 2, vecIntA.end() - 1);  // 只赋值容器中的几个值
	for (int i = 0; i < vecIntC.size(); i++)
	{
		std::cout << vecIntC[i] << " ";
	}
	std::cout << std::endl;

	// 将4个10拷贝到vecIntD
	vecIntD.assign(4, 10);
	for (int i = 0; i < vecIntD.size(); i++)
	{
		std::cout << vecIntD[i] << " ";
	}
	std::cout << std::endl;

	// 两个容器中数据互换
	vecIntC.swap(vecIntD);
	for (int i = 0; i < vecIntC.size(); i++)
	{
		std::cout << vecIntC[i] << " ";
	}
	std::cout << std::endl;
	for (int i = 0; i < vecIntD.size(); i++)
	{
		std::cout << vecIntD[i] << " ";
	}
	std::cout << std::endl;

	// 触发重载运算符 vector& opertate=(const vecter &vec)
	vecIntE = vecIntD;
	for (int i = 0; i < vecIntE.size(); i++)
	{
		std::cout << vecIntE[i] << " ";
	}
	std::cout << std::endl;
#endif

#if 0
	/*****容器大小*****/
	vector<int> vectorInt1;
	cout << vectorInt1.size() << endl;
	if (vectorInt1.empty())
	{
		cout << "vectorInt1为空" << endl;
	}

	int iArray[] = { 1,2,3,4,5 };
	vectorInt1.assign(iArray, iArray + 5);
	cout << vectorInt1.size() << endl;

	// 改变大小
	vectorInt1.resize(10);
	cout << vectorInt1.size() << endl;
	for (int i = 0; i < vectorInt1.size(); i++)
		cout << vectorInt1[i] << " ";
	cout << endl;

	vectorInt1.resize(3);
	cout << vectorInt1.size() << endl;
	for (int i = 0; i < vectorInt1.size(); i++)
		cout << vectorInt1[i] << " ";
	cout << endl;

	vectorInt1.resize(11, 66);  // 长度边长，扩展出的新元素赋值为自定义值
	cout << vectorInt1.size() << endl;
	for (int i = 0; i < vectorInt1.size(); i++)
		cout << vectorInt1[i] << " ";
	cout << endl;
#endif





	return 0;
}

